Итак, нам нужно связывать Excel и Access. Где находится Excel мы знаем, а вот где файл MDB нужно знать и указывать. Но этих проблем можно избежать, если применить такой ход. Если mdb будет в том же каталоге, что и XLS, то можно создать функцию, которая будет получать этот путь.

Итак мы её поместим в отдельный модуль для этого его еще нужно создать. А вот код.
Function stDBGetPath() As String Dim stTemp As String ' взять путь нахождения активной книги stTemp = ActiveWorkbook.Path ' прибавить имя базы данных stDBGetPath = stTemp + "\" + "curs.mdb" End Function
Вот теперь можно открывать базу данных используя объекты DAO. Вот код:
Private Sub CommandButton1_Click()
'---------- объявление переменных ------
' переменная типа базы данных
Dim dbAccess As Database
' переменная типа набор записей
Dim reRecordSet As Recordset
' здесь будет SQL запрос
Dim stSQL As String
' переменная типа даты
Dim daDate As Date
' а вдруг ошибка
On Error GoTo ErrorsDB
' ---------- получаем данные из ячейки
daDate = Range("DATES").Value
' ---------- работа с базой ------------
' откроем базу данных
Set dbAccess = OpenDatabase(stDBGetPath)
' Строим SQL запрос
stSQL = "SELECT * FROM[Curs] WHERE[Поле1] =""" & daDate & """"
' получаем набор значений
Set reRecordSet = dbAccess.OpenRecordset(stSQL)
' если данные получены тогда занести в ячейку
If (reRecordSet.RecordCount > 0) Then
' поместить значение в ячейку
Range("KURS").Value = reRecordSet!Поле3
Else
MsgBox "Not Found"
End If
' закрываем набор записей
reRecordSet.Close
' закрываем базу данных
dbAccess.Close
' все в норме конец
GoTo Ends
' ошибка где-то однако
ErrorsDB:
MsgBox "Произошла ошибка"
Ends:
End Sub
Поле с датой в файле Curs.mdb нужно перевести в текстовый формат. Теперь испытания. Введите дату и цену в $ и нажмите кнопку рядом с датой. Если дата есть, то курс поменяется, иначе получите сообщение, что нет данных Not Found. Поменяйте дату и опять нажмите кнопку. Все пересчитается. Вот пример работы:
